<?php

namespace App\Repository\Main;

use App\Repository\BaseRepository;
use App\Repository\UpThree\MainOrderRepostition;
use App\Repository\UpThree\GetThreeOrderRepostition;
use Monolog\Logger;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler;


class MainRepository extends  BaseRepository
{
  public function __construct()
  {
    $this->log = new Logger('mainOrder');
    $this->log->pushHandler(
      (new RotatingFileHandler(storage_path('/logs/mainOrder.log'), 14, Logger::DEBUG, true, 0777))->setFormatter(new LineFormatter(null, null, true, true))
    );
    parent::__construct();
  }
  //异步信息 全部都需要走这个地方 
  public function sendOrder($data = array(), $type = '')
  {
    // $data = [
    //   'order_num' => '', // 订单号
    // ];
    // 都需要对应成功或失败
    $res = [];
    switch ($type) {
      case 'createOrder':
        $model = new MainOrderRepostition();
        $res = $model->orderThree($data, false);
        // height
        // 订单提交
        // 查询所有的order表  一种不管成功失败 全部都存入到数据库中  注意重复的
        // 注意订单状态 处理  推送信息 发送短信
        break;
      case 'catchOrder':
        // height  
        $model = new GetThreeOrderRepostition();
        $res = $model->getOrder($data);
        // 抓取订单  直接提交到第三方
        // 重新抓取订单
        break;
      case 'threeOrderStatus':
        // low
        // 每天晚上 12点运行 或者 设置运行时间
        // 主动获取订单状态 或 更改数据 需要访问第三方的
        break;
      case 'orderStatus':
        // 根据状态判断是否发送短信
        // 根据状态判断是否推送信息
        $res = ['status' => 200, 'msg' => '暂时运行'];
        break;
      case 'smsAndPushOrder':
        $model = new MainOrderRepostition();
        $res = $model->isSmsAndPush($data);
        // 发送短信或推送信息
        break;
      case 'sendSms':
        // 应该就不用了
        $model = new MainOrderRepostition();
        $res = $model->pushSmsCline($data);
        // middle
        // 发送短信  判断是否 提交的时候就发货
        // 批量发送短信 直接添加就行 手动发送
        break;
      case 'pushOrder':
        // 这个应该也不用
        // low
        // 手动发送
        $model = new MainOrderRepostition();
        $res = $model->pushMessage($data);
        break;
      case 'replySms':
        $model = new MainOrderRepostition();
        $res = $model->replySms($data);
        break;
      case 'smsWarn':
        $model = new MainOrderRepostition();
        $res = $model->warnSms($data);
        break;

      case 'catchDouYinOld':
        // 提交到老系统抖音的订单
        $model = new GetThreeOrderRepostition();
        $res = $model->catchDouYinOld($data);
        break;
      case 'missOrderDouyin':
        //系统漏单抓取
        $model = new GetThreeOrderRepostition();
        $res = $model->getMissingOrder($data);
        break;
      case 'douyinFail':
        // 抖音退款 10分钟跑一次 跑不动 会报错
        $this->log->info('douyinFail的时间' . time());
        // $model = new MainOrderRepostition();
        // $res = $model->douyinSendDeliverDail($data);
        break;
      case 'pushManual':
        // 手动推送信息
        $model = new MainOrderRepostition();
        // $res = $model->pushManual();
        break;
      case 'batchAllGoods':
        $model = new MainOrderRepostition();
        $res = $model->batchAllOrderThree($data);
        break;
      case 'douyinNewSubmit':
        $model = new GetThreeOrderRepostition();
        $res = $model->douyinNewSubmit($data);
        break;
    }
    $this->log->info('类型:' . $type . '参数:' . json_encode($data) . '返回的结果:' . json_encode($res));
    if (empty($res['code']) || $res['code'] != 200) {
      // 这个地方可以重新提交
    }
    return $res;
  }
  // 大文件的读取和设置
  public function longFile($data = array(), $type = '')
  {
    // $data = [
    //   'file_name' => '',
    // ];
    // 排队处理
    switch ($type) {
      case 'smsMore':
        break;
      case 'createOrder':
        break;
    }
  }
  // 订单成功
  public function createOrder()
  {
    // 将订单提交到第三方

  }
  // 订单失败
  public function createOrderFail()
  {
  }
  // 订单状态处理
  public function orderStatus()
  {
    // 判断是否发送短信
    // 判断是否推送信息
    // 判断是否发送给另外个代理商
  }
  // 订单状态失败处理
  public function orderStatusFail()
  {
  }
  // 抓取订单成功
  public function catchOrder()
  {
  }
  // 抓取订单失败
  public function catchOrderFail()
  {
  }
  // 发送短信成功
  public function sendSms()
  {
  }
  // 发送短信失败
  public function sendSmsFail()
  {
  }
  // 推送订单
  public function pushOrder()
  {
  }
  // 推送订单失败
  public function pushOrderFail()
  {
  }
}
